package com.trailwalker.javafx.utils.style;

import com.trailwalker.javafx.widget.dialog.JfxLoadingForm;
import com.trailwalker.javafx.widget.dialog.JfxToast;
import javafx.scene.image.Image;
import javafx.scene.paint.Paint;
import javafx.scene.text.Font;
import javafx.stage.Stage;

public class JfxCustomViewUtils {

    /**
     * 获取加载窗口的实例
     * @param stage 主窗口
     * @return 返回加载窗口的实例
     */
    public static JfxLoadingForm getLoadingForm(Stage stage){
        return getLoadingForm(stage,"数据加载中，请稍后……");
    }

    /**
     * 获取加载窗口的实例
     * @param stage 主窗口
     * @param text 加载窗口的文字内容
     * @return 返回加载窗口的实例
     */
    public static JfxLoadingForm getLoadingForm(Stage stage, String text){
        double stageHeight=stage.getHeight();
        JfxLoadingForm syJFXLoadingForm = new JfxLoadingForm(stage);
        syJFXLoadingForm.setText(text)
                .setTextFill(Paint.valueOf("#ffffff"))
                .setFont(Font.font(stageHeight/40))
                .setProgressIndicatorBackground("#ffffff")
                .setProgressIndicatorSize(stageHeight/20)
                .setSpacing(stageHeight/80);
        return syJFXLoadingForm;
    }

    /**
     * 弹出吐司
     * @param stage 主窗口
     * @param text 需要弹出的文字内容
     */
    public static void showShortToast(Stage stage,String text){
        JfxToast.makeText(stage,text,JfxToast.LENGTH_SHORT).show();
    }

    /**
     * 弹出吐司
     * @param stage 主窗口
     * @param text 需要弹出的文字内容
     */
    public static void showLongToast(Stage stage,String text){
        JfxToast.makeText(stage,text,JfxToast.LENGTH_LONG).show();
    }

    /**
     * 获取图片的缩放比例
     * @param image 源图片
     * @param imageMaxHeight 图片可达到的最大高度
     * @param imageMaxWidth 图片可达到的最大宽度
     * @return 返回图片尺寸的缩放比例
     */
    public static double getImageFitScale(Image image,double imageMaxHeight,double imageMaxWidth){
        double imageHeight=image.getHeight();
        double imageWidth=image.getWidth();
        if(imageHeight/imageWidth>=imageMaxHeight/imageMaxWidth){
            return imageMaxHeight/imageHeight;
        }else {
            return imageMaxWidth/imageWidth;
        }
    }
}
